// 导入redux中的方法：createStore；创建一个store仓库；马上过时，新方法：configureStore
// 导入redux中的方法：applyMiddleware；应用中间件
import { createStore, applyMiddleware } from 'redux'

// 导入纯函数
import reducer from './reducer'

// 安装：npm i --save redux-logger
// 导入打印插件：logger；logger 本质是函数,负责打印日志( 每当store中的数据发生变化,就会自动打印日志 )
import logger from 'redux-logger'

// 安装：npm install redux-persist
// 导入持久化插件：将store中的数据存储到本地存储；读取时，再从本地存储中读取，赋值给store，实现store数据持久化
// 导入持久化插件提供的两个方法：persistStore、persistReducer
import { persistStore, persistReducer } from 'redux-persist'

// 默认store数据存储的位置：为本地存储的localStoreage
import storage from 'redux-persist/lib/storage'
// 如果想存储在sessionStorage中，后面加上session
// import storage from 'redux-persist/lib/storage/session' 

// 导入处理纯函数中函数代码的方法
import thunk from 'redux-thunk'

// 生成一个持久化的reducer；通过 persistReducer() 方法
let persistedReducer = persistReducer(
    // key:'存储时，key的名字'
    // storage：往哪里存储：（localStorage）
    {key:'redux', storage },
    reducer ,
)

// 创建store 参数一：为持久化的reducer
var store = createStore(persistedReducer, applyMiddleware( thunk,logger, ) )

// 生成一个持久化的store；通过 persistStore() 方法
export let persistor = persistStore( store )

// 命名导出；就得命名导入
// export let OpersistStore = persistStore(store)

// 默认导出
export default  store

// 在根组件 index.js 进行配置



// 没有使用持久化插件的写法
// 调用createStore()方法，创建唯一的store仓库；有两个参数：第一个 纯函数：redux；第二个：应用插件：调用applyMiddleware()。
// 调用applyMiddleware()方法， 将应用其他第三方中间件到redux中，逗号进行分割

// 创建store
// let store = createStore(reducer,applyMiddleware(/* 逗号分割放置其他中间件 */ logger))
// 导出store
// export default store


